package se.webbzon.boltzmann.hud;

import java.awt.Color;
import java.awt.Font;
import java.awt.Image;

import se.webbzon.oschi01.resourceset.ResourceSet;

public class TopBarLayout extends AbstractHudLayout {
	
	// The horizontal offset of the top bar
	private final int xOffset;
	
	// The horizontal and vertical offset of the item in the top bar
	private final int itemXOffset, itemYOffset;
	
	// The width and height of the item in the top bar
	private final int itemWidth, itemHeight;
	
	// The horizontal and vertical offset of the character in the top bar
	private final int characterXOffset, characterYOffset;
	
	// The horizontal and vertical offset of the coin in the top bar
	private final int coinXOffset, coinYOffset;
	
	// The horizontal spacing between the coin and the text
	private final int coinXSpacing;
	
	// The horizontal and vertical offset of the note in the top bar
	private final int noteXOffset, noteYOffset;
	
	// The horizontal spacing between the note and the text
	private final int noteXSpacing;
	
	// The horizontal and vertical offset of the health bar in the top bar
	private final int healthBarXOffset, healthBarYOffset;
	
	// The horizontal spacing between the health bar icons 
	private final int healthBarXSpacing;
	
	// The horizontal and vertical offset of the energy bar in the top bar
	private final int energyBarXOffset, energyBarYOffset;
	
	// The maximal width and height of the energy bar in the top bar
	private final int energyBarWidth, energyBarHeight;  
	
	// The vertical spacing between the bottom of the energy bar to the text
	private final int energyBarYSpacing;
	
	// The color of the energy bar
	private final Color energyBarColor;
	
	// The font used in the top bar
	private final Font textFont;
	
	// The image of the top bar
	private final Image topBarImage;
	
	// The image set of the characters in the top bar
	private final ResourceSet<Image> characterImageSet;
	
	// The image set of the coin and the note in the top bar
	private final ResourceSet<Image> coinImageSet;
	private final ResourceSet<Image> noteImageSet;
	
	// The image set of the health bar in the top bar
	private final ResourceSet<Image> healthBarImageSet;
	
	/*============================================================
	Constructors
	============================================================*/

	/** Creates a new top bar layout for the game inventory. **/
	public TopBarLayout(int xOffset, 
						int itemXOffset, int itemYOffset,
						int itemWidth, int itemHeight,
						int characterXOffset, int characterYOffset,
						int coinXOffset, int coinYOffset, int coinXSpacing,
						int noteXOffset, int noteYOffset, int noteXSpacing,
						int healthBarXOffset, int healthBarYOffset, int healthBarXSpacing,
						int energyBarXOffset, int energyBarYOffset,
						int energyBarWidth, int energyBarHeight, int energyBarYSpacing,
						Color energyBarColor,
						Font textFont,
						Image tobBarImage,
						ResourceSet<Image> characterImageSet,
						ResourceSet<Image> coinImageSet,
						ResourceSet<Image> noteImageSet,
						ResourceSet<Image> healthBarImageSet) {
		this.xOffset = xOffset;
		this.itemXOffset = itemXOffset;
		this.itemYOffset = itemYOffset;
		this.itemWidth = itemWidth;
		this.itemHeight = itemHeight;
		this.characterXOffset = characterXOffset;
		this.characterYOffset = characterYOffset;
		this.coinXOffset = coinXOffset;
		this.coinYOffset = coinYOffset;
		this.coinXSpacing = coinXSpacing;
		this.noteXOffset = noteXOffset;
		this.noteYOffset = noteYOffset;
		this.noteXSpacing = noteXSpacing;
		this.healthBarXOffset = healthBarXOffset;
		this.healthBarYOffset = healthBarYOffset;
		this.healthBarXSpacing = healthBarXSpacing;
		this.energyBarXOffset = energyBarXOffset;
		this.energyBarYOffset = energyBarYOffset;
		this.energyBarWidth = energyBarWidth;
		this.energyBarHeight = energyBarHeight;
		this.energyBarYSpacing = energyBarYSpacing;
		this.energyBarColor = energyBarColor;
		this.textFont = textFont;
		this.topBarImage = tobBarImage;
		this.characterImageSet = characterImageSet;
		this.coinImageSet = coinImageSet;
		this.noteImageSet = noteImageSet;
		this.healthBarImageSet = healthBarImageSet;
	}
	
	/*============================================================
	Public Methods
	============================================================*/

	/** Returns the horizontal offset of the top bar. **/
	public int getXOffset() {
		return xOffset;
	}
	
	/** Returns the horizontal offset of the item in the top bar. **/
	public int getItemXOffset() {
		return itemXOffset;
	}
	
	/** Returns the horizontal offset of the item in the top bar. **/
	public int getItemYOffset() {
		return itemYOffset;
	}
	
	/** Returns the width of the item in the top bar. **/
	public int getItemWidth() {
		return itemWidth;
	}

	/** Returns the height of the item in the top bar. **/
	public int getItemHeight() {
		return itemHeight;
	}
	
	/** Returns the horizontal offset of the character in the top bar. **/
	public int getCharacterXOffset() {
		return characterXOffset;
	}
	
	/** Returns the vertical offset of the character in the top bar. **/
	public int getCharacterYOffset() {
		return characterYOffset;
	}
	
	/** Returns the horizontal offset of the coin in the top bar. **/
	public int getCoinXOffset() {
		return coinXOffset;
	}

	/** Returns the vertical offset of the coin in the top bar. **/
	public int getCoinYOffset() {
		return coinYOffset;
	}
	
	/** Returns the horizontal spacing between coin and the text in the top bar. **/
	public int getCoinXSpacing() {
		return coinXSpacing;
	}

	/** Returns the horizontal offset of the note in the top bar. **/
	public int getNoteXOffset() {
		return noteXOffset;
	}

	/** Returns the vertical offset of the note in the top bar. **/
	public int getNoteYOffset() {
		return noteYOffset;
	}
	
	/** Returns the horizontal spacing between note and the text in the top bar. **/
	public int getNoteXSpacing() {
		return noteXSpacing;
	}
	
	/** Returns the horizontal offset of the health bar in the top bar. **/
	public int getHealthBarXOffset() {
		return healthBarXOffset;
	}

	/** Returns the vertical offset of the health bar in the top bar. **/
	public int getHealthBarYOffset() {
		return healthBarYOffset;
	}

	/** Returns the horizontal spacing between the health bar icons. **/
	public int getHealthBarXSpacing() {
		return healthBarXSpacing;
	}
	
	/** Returns the horizontal offset of the energy bar in the top bar. **/
	public int getEnergyBarXOffset() {
		return energyBarXOffset;
	}

	/** Returns the vertical offset of the energy bar in the top bar. **/
	public int getEnergyBarYOffset() {
		return energyBarYOffset;
	}

	/** Returns the width of the energy bar in the top bar. **/
	public int getEnergyBarWidth() {
		return energyBarWidth;
	}

	/** Returns the height of the energy bar in the top bar. **/
	public int getEnergyBarHeight() {
		return energyBarHeight;
	}
	
	/** The vertical spacing between the bottom of the energy bar to the text. **/
	public int getEnergyBarYSpacing() {
		return energyBarYSpacing;
	}

	/** Returns the color of the energy used in the top bar. **/
	public Color getEnergyBarColor() {
		return energyBarColor;
	}
	
	/** Returns the text font used in the top bar. **/
	public Font getTextFont() {
		return textFont;
	}
	
	/** Returns the image of the top bar. **/
	public Image getTopBarImage() {
		return topBarImage;
	}
	
	/** Returns the image set of the character in the top bar. **/
	public ResourceSet<Image> getCharacterImageSet() {
		return characterImageSet;
	}
	
	/** Returns the image set of the coin in the top bar. **/
	public ResourceSet<Image> getCoinImageSet() {
		return coinImageSet;
	}

	/** Returns the image set of the note in the top bar. **/
	public ResourceSet<Image> getNoteImageSet() {
		return noteImageSet;
	}

	/** Returns the image set of the health bar in the top bar. **/
	public ResourceSet<Image> getHealthBarImageSet() {
		return healthBarImageSet;
	}

}
